(0) Obligation:

The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^2).


The TRS R consists of the following rules:

*(@x, @y) → #mult(@x, @y)
dyade(@l1, @l2) → dyade#1(@l1, @l2)
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2))
dyade#1(nil, @l2) → nil
mult(@n, @l) → mult#1(@l, @n)
mult#1(::(@x, @xs), @n) → ::(*(@n, @x), mult(@n, @xs))
mult#1(nil, @n) → nil

The (relative) TRS S consists of the following rules:

#add(#0, @y) → @y
#add(#neg(#s(#0)), @y) → #pred(@y)
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y))
#add(#pos(#s(#0)), @y) → #succ(@y)
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y))
#mult(#0, #0) → #0
#mult(#0, #neg(@y)) → #0
#mult(#0, #pos(@y)) → #0
#mult(#neg(@x), #0) → #0
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y))
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #0) → #0
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y))
#natmult(#0, @y) → #0
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(@x))) → #neg(#s(#s(@x)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x))
#succ(#pos(#s(@x))) → #pos(#s(#s(@x)))

Rewrite Strategy: INNERMOST

(1) RelTrsToTrsProof (UPPER BOUND(ID) transformation)

transformed relative TRS to TRS

(2) Obligation:

The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^2).


The TRS R consists of the following rules:

*(@x, @y) → #mult(@x, @y)
dyade(@l1, @l2) → dyade#1(@l1, @l2)
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2))
dyade#1(nil, @l2) → nil
mult(@n, @l) → mult#1(@l, @n)
mult#1(::(@x, @xs), @n) → ::(*(@n, @x), mult(@n, @xs))
mult#1(nil, @n) → nil
#add(#0, @y) → @y
#add(#neg(#s(#0)), @y) → #pred(@y)
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y))
#add(#pos(#s(#0)), @y) → #succ(@y)
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y))
#mult(#0, #0) → #0
#mult(#0, #neg(@y)) → #0
#mult(#0, #pos(@y)) → #0
#mult(#neg(@x), #0) → #0
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y))
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #0) → #0
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y))
#natmult(#0, @y) → #0
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(@x))) → #neg(#s(#s(@x)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x))
#succ(#pos(#s(@x))) → #pos(#s(#s(@x)))

Rewrite Strategy: INNERMOST

(3) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)

Converted Cpx (relative) TRS to CDT

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

*(z0, z1) → #mult(z0, z1)
dyade(z0, z1) → dyade#1(z0, z1)
dyade#1(::(z0, z1), z2) → ::(mult(z0, z2), dyade(z1, z2))
dyade#1(nil, z0) → nil
mult(z0, z1) → mult#1(z1, z0)
mult#1(::(z0, z1), z2) → ::(*(z2, z0), mult(z2, z1))
mult#1(nil, z0) → nil
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
DYADE#1(nil, z0) → c3
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
MULT#1(nil, z0) → c6
#ADD(#0, z0) → c7
#ADD(#neg(#s(#0)), z0) → c8(#PRED(z0))
#ADD(#neg(#s(#s(z0))), z1) → c9(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#0)), z0) → c10(#SUCC(z0))
#ADD(#pos(#s(#s(z0))), z1) → c11(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#MULT(#0, #0) → c12
#MULT(#0, #neg(z0)) → c13
#MULT(#0, #pos(z0)) → c14
#MULT(#neg(z0), #0) → c15
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #0) → c18
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#0, z0) → c21
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#PRED(#0) → c23
#PRED(#neg(#s(z0))) → c24
#PRED(#pos(#s(#0))) → c25
#PRED(#pos(#s(#s(z0)))) → c26
#SUCC(#0) → c27
#SUCC(#neg(#s(#0))) → c28
#SUCC(#neg(#s(#s(z0)))) → c29
#SUCC(#pos(#s(z0))) → c30
S tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
DYADE#1(nil, z0) → c3
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
MULT#1(nil, z0) → c6
#ADD(#0, z0) → c7
#ADD(#neg(#s(#0)), z0) → c8(#PRED(z0))
#ADD(#neg(#s(#s(z0))), z1) → c9(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#0)), z0) → c10(#SUCC(z0))
#ADD(#pos(#s(#s(z0))), z1) → c11(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#MULT(#0, #0) → c12
#MULT(#0, #neg(z0)) → c13
#MULT(#0, #pos(z0)) → c14
#MULT(#neg(z0), #0) → c15
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #0) → c18
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#0, z0) → c21
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#PRED(#0) → c23
#PRED(#neg(#s(z0))) → c24
#PRED(#pos(#s(#0))) → c25
#PRED(#pos(#s(#s(z0)))) → c26
#SUCC(#0) → c27
#SUCC(#neg(#s(#0))) → c28
#SUCC(#neg(#s(#s(z0)))) → c29
#SUCC(#pos(#s(z0))) → c30
K tuples:none
Defined Rule Symbols:

*, dyade, dyade#1, mult, mult#1, #add, #mult, #natmult, #pred, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #ADD, #MULT, #NATMULT, #PRED, #SUCC

Compound Symbols:

c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30

(5) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 19 trailing nodes:

#MULT(#0, #neg(z0)) → c13
#SUCC(#pos(#s(z0))) → c30
#NATMULT(#0, z0) → c21
#PRED(#pos(#s(#0))) → c25
#SUCC(#0) → c27
#PRED(#0) → c23
#MULT(#pos(z0), #0) → c18
DYADE#1(nil, z0) → c3
#MULT(#0, #0) → c12
#SUCC(#neg(#s(#0))) → c28
#ADD(#0, z0) → c7
#SUCC(#neg(#s(#s(z0)))) → c29
#PRED(#neg(#s(z0))) → c24
#PRED(#pos(#s(#s(z0)))) → c26
#MULT(#neg(z0), #0) → c15
#MULT(#0, #pos(z0)) → c14
MULT#1(nil, z0) → c6
#ADD(#pos(#s(#0)), z0) → c10(#SUCC(z0))
#ADD(#neg(#s(#0)), z0) → c8(#PRED(z0))

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

*(z0, z1) → #mult(z0, z1)
dyade(z0, z1) → dyade#1(z0, z1)
dyade#1(::(z0, z1), z2) → ::(mult(z0, z2), dyade(z1, z2))
dyade#1(nil, z0) → nil
mult(z0, z1) → mult#1(z1, z0)
mult#1(::(z0, z1), z2) → ::(*(z2, z0), mult(z2, z1))
mult#1(nil, z0) → nil
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#ADD(#neg(#s(#s(z0))), z1) → c9(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
S tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#ADD(#neg(#s(#s(z0))), z1) → c9(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
K tuples:none
Defined Rule Symbols:

*, dyade, dyade#1, mult, mult#1, #add, #mult, #natmult, #pred, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #ADD, #MULT, #NATMULT

Compound Symbols:

c, c1, c2, c4, c5, c9, c11, c16, c17, c19, c20, c22

(7) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing tuple parts

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

*(z0, z1) → #mult(z0, z1)
dyade(z0, z1) → dyade#1(z0, z1)
dyade#1(::(z0, z1), z2) → ::(mult(z0, z2), dyade(z1, z2))
dyade#1(nil, z0) → nil
mult(z0, z1) → mult#1(z1, z0)
mult#1(::(z0, z1), z2) → ::(*(z2, z0), mult(z2, z1))
mult#1(nil, z0) → nil
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#neg(#s(#s(z0))), z1) → c9(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#neg(#s(#s(z0))), z1) → c9(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:none
Defined Rule Symbols:

*, dyade, dyade#1, mult, mult#1, #add, #mult, #natmult, #pred, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c9, c11

(9) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)

Removed 1 leading nodes:

#ADD(#neg(#s(#s(z0))), z1) → c9(#ADD(#pos(#s(z0)), z1))

(10) Obligation:

Complexity Dependency Tuples Problem
Rules:

*(z0, z1) → #mult(z0, z1)
dyade(z0, z1) → dyade#1(z0, z1)
dyade#1(::(z0, z1), z2) → ::(mult(z0, z2), dyade(z1, z2))
dyade#1(nil, z0) → nil
mult(z0, z1) → mult#1(z1, z0)
mult#1(::(z0, z1), z2) → ::(*(z2, z0), mult(z2, z1))
mult#1(nil, z0) → nil
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:none
Defined Rule Symbols:

*, dyade, dyade#1, mult, mult#1, #add, #mult, #natmult, #pred, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11

(11) CdtUsableRulesProof (EQUIVALENT transformation)

The following rules are not usable and were removed:

*(z0, z1) → #mult(z0, z1)
dyade(z0, z1) → dyade#1(z0, z1)
dyade#1(::(z0, z1), z2) → ::(mult(z0, z2), dyade(z1, z2))
dyade#1(nil, z0) → nil
mult(z0, z1) → mult#1(z1, z0)
mult#1(::(z0, z1), z2) → ::(*(z2, z0), mult(z2, z1))
mult#1(nil, z0) → nil
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:none
Defined Rule Symbols:

#natmult, #add, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11

(13) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

DYADE(z0, z1) → c1(DYADE#1(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(#0) = 0   
POL(#ADD(x1, x2)) = 0   
POL(#MULT(x1, x2)) = 0   
POL(#NATMULT(x1, x2)) = 0   
POL(#add(x1, x2)) = 0   
POL(#natmult(x1, x2)) = 0   
POL(#neg(x1)) = 0   
POL(#pos(x1)) = 0   
POL(#s(x1)) = 0   
POL(#succ(x1)) = 0   
POL(*'(x1, x2)) = 0   
POL(::(x1, x2)) = [1] + x2   
POL(DYADE(x1, x2)) = [1] + x1   
POL(DYADE#1(x1, x2)) = x1   
POL(MULT(x1, x2)) = 0   
POL(MULT#1(x1, x2)) = 0   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c11(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c19(x1)) = x1   
POL(c2(x1, x2)) = x1 + x2   
POL(c20(x1)) = x1   
POL(c22(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c5(x1, x2)) = x1 + x2   

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:

DYADE(z0, z1) → c1(DYADE#1(z0, z1))
Defined Rule Symbols:

#natmult, #add, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11

(15) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)

The following tuples could be moved from S to K by knowledge propagation:

DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))

(16) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:

DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
Defined Rule Symbols:

#natmult, #add, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11

(17) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(#0) = 0   
POL(#ADD(x1, x2)) = [2]x1 + x12   
POL(#MULT(x1, x2)) = x1·x2   
POL(#NATMULT(x1, x2)) = 0   
POL(#add(x1, x2)) = x1 + x2 + x12   
POL(#natmult(x1, x2)) = [2]x2 + x22 + x1·x2 + [2]x12   
POL(#neg(x1)) = [1]   
POL(#pos(x1)) = 0   
POL(#s(x1)) = 0   
POL(#succ(x1)) = [1] + x1   
POL(*'(x1, x2)) = x1·x2   
POL(::(x1, x2)) = [2] + x1 + x2   
POL(DYADE(x1, x2)) = [2] + [2]x1 + [2]x1·x2 + [2]x12   
POL(DYADE#1(x1, x2)) = [1] + x1 + [2]x1·x2 + [2]x12   
POL(MULT(x1, x2)) = x1 + x1·x2   
POL(MULT#1(x1, x2)) = x1·x2   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c11(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c19(x1)) = x1   
POL(c2(x1, x2)) = x1 + x2   
POL(c20(x1)) = x1   
POL(c22(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c5(x1, x2)) = x1 + x2   

(18) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:

DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
Defined Rule Symbols:

#natmult, #add, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11

(19) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(#0) = [1]   
POL(#ADD(x1, x2)) = 0   
POL(#MULT(x1, x2)) = x1·x2   
POL(#NATMULT(x1, x2)) = [2]   
POL(#add(x1, x2)) = [1] + x1 + [2]x22 + x1·x2 + [2]x12   
POL(#natmult(x1, x2)) = [2] + x22 + [2]x1·x2 + x12   
POL(#neg(x1)) = [2]   
POL(#pos(x1)) = [2] + x1   
POL(#s(x1)) = [1]   
POL(#succ(x1)) = [2]x1 + [2]x12   
POL(*'(x1, x2)) = [2]x1 + x1·x2   
POL(::(x1, x2)) = [1] + x1 + x2   
POL(DYADE(x1, x2)) = x1 + x2 + [2]x1·x2 + x12   
POL(DYADE#1(x1, x2)) = x1 + x2 + [2]x1·x2 + x12   
POL(MULT(x1, x2)) = [2]x1·x2   
POL(MULT#1(x1, x2)) = [2]x1·x2   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c11(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c19(x1)) = x1   
POL(c2(x1, x2)) = x1 + x2   
POL(c20(x1)) = x1   
POL(c22(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c5(x1, x2)) = x1 + x2   

(20) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:

DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
Defined Rule Symbols:

#natmult, #add, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11

(21) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(#0) = [1]   
POL(#ADD(x1, x2)) = 0   
POL(#MULT(x1, x2)) = [2]x1·x2   
POL(#NATMULT(x1, x2)) = [1] + x1 + x2 + [2]x1·x2   
POL(#add(x1, x2)) = [1] + x1 + x2 + x22 + [2]x1·x2 + x12   
POL(#natmult(x1, x2)) = [1] + [2]x22 + x1·x2 + [2]x12   
POL(#neg(x1)) = [2] + x1   
POL(#pos(x1)) = [1] + x1   
POL(#s(x1)) = [1] + x1   
POL(#succ(x1)) = [1] + [2]x1   
POL(*'(x1, x2)) = x1 + [2]x1·x2   
POL(::(x1, x2)) = [2] + x1 + x2   
POL(DYADE(x1, x2)) = [2]x1·x2   
POL(DYADE#1(x1, x2)) = [2]x1·x2   
POL(MULT(x1, x2)) = [2]x1·x2   
POL(MULT#1(x1, x2)) = [2]x1·x2   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c11(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c19(x1)) = x1   
POL(c2(x1, x2)) = x1 + x2   
POL(c20(x1)) = x1   
POL(c22(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c5(x1, x2)) = x1 + x2   

(22) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:

*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:

DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
Defined Rule Symbols:

#natmult, #add, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11

(23) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
We considered the (Usable) Rules:none
And the Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(#0) = [2]   
POL(#ADD(x1, x2)) = [2]x1 + [2]x12   
POL(#MULT(x1, x2)) = 0   
POL(#NATMULT(x1, x2)) = 0   
POL(#add(x1, x2)) = [2] + x1 + x2 + [2]x1·x2 + x12   
POL(#natmult(x1, x2)) = [1] + [2]x2 + [2]x22 + [2]x1·x2   
POL(#neg(x1)) = [1]   
POL(#pos(x1)) = 0   
POL(#s(x1)) = 0   
POL(#succ(x1)) = [1]   
POL(*'(x1, x2)) = [2] + [2]x1 + x2 + [2]x1·x2   
POL(::(x1, x2)) = [2] + x1 + x2   
POL(DYADE(x1, x2)) = [1] + x1 + [2]x2 + [2]x1·x2 + [2]x12   
POL(DYADE#1(x1, x2)) = [2]x1·x2 + [2]x12   
POL(MULT(x1, x2)) = [2] + x1 + [2]x2 + [2]x1·x2 + x12   
POL(MULT#1(x1, x2)) = [2]x1 + x22 + [2]x1·x2   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c11(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c19(x1)) = x1   
POL(c2(x1, x2)) = x1 + x2   
POL(c20(x1)) = x1   
POL(c22(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c5(x1, x2)) = x1 + x2   

(24) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:

MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:

DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
Defined Rule Symbols:

#natmult, #add, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11

(25) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)

The following tuples could be moved from S to K by knowledge propagation:

MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))

(26) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:

#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:

DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
Defined Rule Symbols:

#natmult, #add, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11

(27) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
We considered the (Usable) Rules:none
And the Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(#0) = [1]   
POL(#ADD(x1, x2)) = [1] + x1   
POL(#MULT(x1, x2)) = [1] + [2]x1·x2   
POL(#NATMULT(x1, x2)) = [2] + [2]x1 + [2]x2 + [2]x1·x2   
POL(#add(x1, x2)) = [2]x22 + [2]x1·x2 + [2]x12   
POL(#natmult(x1, x2)) = x1 + [2]x2 + x22 + [2]x12   
POL(#neg(x1)) = [1] + x1   
POL(#pos(x1)) = [2] + x1   
POL(#s(x1)) = [2] + x1   
POL(#succ(x1)) = [2] + [2]x1 + x12   
POL(*'(x1, x2)) = [1] + [2]x1·x2   
POL(::(x1, x2)) = [2] + x1 + x2   
POL(DYADE(x1, x2)) = [1] + [2]x2 + [2]x1·x2 + [2]x12   
POL(DYADE#1(x1, x2)) = x2 + [2]x1·x2 + [2]x12   
POL(MULT(x1, x2)) = [2] + [2]x1 + x2 + [2]x1·x2 + [2]x12   
POL(MULT#1(x1, x2)) = [1] + x1 + [2]x22 + [2]x1·x2   
POL(c(x1)) = x1   
POL(c1(x1)) = x1   
POL(c11(x1)) = x1   
POL(c16(x1)) = x1   
POL(c17(x1)) = x1   
POL(c19(x1)) = x1   
POL(c2(x1, x2)) = x1 + x2   
POL(c20(x1)) = x1   
POL(c22(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c5(x1, x2)) = x1 + x2   

(28) Obligation:

Complexity Dependency Tuples Problem
Rules:

#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:

*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:none
K tuples:

DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
Defined Rule Symbols:

#natmult, #add, #succ

Defined Pair Symbols:

*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD

Compound Symbols:

c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11

(29) SIsEmptyProof (BOTH BOUNDS(ID, ID) transformation)

The set S is empty

(30) BOUNDS(1, 1)